package com.leetcode.array;

import java.util.PriorityQueue;

/**
 * @author XW
 * @data 2024/7/12 14:32
 * @description 最小数字游戏
 *  你有一个下标从 0 开始、长度为 偶数 的整数数组 nums ，同时还有一个空数组 arr 。Alice 和 Bob 决定玩一个游戏，
 *  游戏中每一轮 Alice 和 Bob 都会各自执行一次操作。游戏规则如下：
 *     每一轮，Alice 先从 nums 中移除一个 最小 元素，然后 Bob 执行同样的操作。
 *     接着，Bob 会将移除的元素添加到数组 arr 中，然后 Alice 也执行同样的操作。
 *     游戏持续进行，直到 nums 变为空。
 *
 * 返回结果数组 arr 。
 */
public class Code2974_MinNumber {
    public int[] numberGame(int[] nums) {
        int[] ints = new int[nums.length];
        //对数组进行二分排序
        PriorityQueue<Integer> integers = new PriorityQueue<>();
        for (int num : nums) {
            integers.add(num);
        }
        int i=0;
        while(!integers.isEmpty()){
            int p1 = integers.poll();
            ints[i++] = integers.poll();
            ints[i++] = p1;
        }

        return ints;
    }
    public int[] numberGame1(int[] nums) {
        //快速排序
        for (int i = nums.length - 1; i >= 0; i--) {
            for (int j = 0; j < i; j++) {
                if (nums[j] > nums[j + 1]) {
                    int temp = nums[j];
                    nums[j] = nums[j + 1];
                    nums[j + 1] = temp;
                }
            }
        }
        //两两交换
        for (int i = 0; i < nums.length; i+=2) {
            int temp = nums[i];
            nums[i] = nums[i+1];
            nums[i+1] = temp;
        }
        return nums;
    }

}
